package com.caigou.service;

import com.caigou.bean.cms.entity.Contribute;
import com.caigou.bean.cms.entity.ContributeChannel;
import com.caigou.bean.cms.entity.ContributePublishType;
import com.caigou.bean.cms.entity.ContributeType;
import com.caigou.bean.cms.param.*;
import com.caigou.bean.exam.entity.Users;
import com.caigou.util.Result;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

public interface ContributeService {

    Contribute selectContributeByPrimaryKey(int id);
    Result saveContribute(Contribute contribute, MultipartFile[] files);
    Contribute selectContributeDetailByPrimaryKey(int id);

    int uploadContribute(MultipartFile multipartFile,int i, int contributeId);

    ContributeChannel selectContributeChannelByPrimaryKey(int id);
    int saveContributeChannel(ContributeChannel contributeChannel);
    Result saveContributeChannel(ContributeChannelParam param);
    List<ContributeChannel> listContributeChannel();
    int getContributeChannelCount();
    int updateContributeChannel(ContributeChannel contributeChannel);
    Result updateContributeChannel(ContributeChannelParam param);
    Result deleteContributeChannel(int id);


    ContributeType selectContributeTypeByPrimaryKey(int id);
    int saveContributeType(ContributeType contributeType);
    Result saveContributeType(ContributeTypeParam param);
    List<ContributeType> listContributeType();
    int getContributeTypeCount();
    int updateContributeType(ContributeType contributeType);
    Result updateContributeType(ContributeTypeParam param);
    Result deleteContributeType(int id);

    Result queryContribute(ContributeQueryParam param);

    Result getContributeConfig();
    Result saveContributeConfig(AttachmentConfigParam param);

    Result processContribute(ContributeParam param, String processUserId);
    Result getContributeDetail(ContributeParam param);
    Result getContributeDetail(Integer id, Users user);

    int getCountByProcessStatus(int processStatus);

    ContributePublishType selectContributePublishTypeByPrimaryKey(int id);
    int saveContributePublishType(ContributePublishType contributePublishType);
    Result saveContributePublishType(ContributePublishTypeParam param);
    List<ContributePublishType> listContributePublishType();
    int getContributePublishTypeCount();
    int updateContributePublishType(ContributePublishType contributePublishType);
    Result updateContributePublishType(ContributePublishTypeParam param);
    Result deleteContributePublishType(int id);

    Result listMyContribute(ContributeQueryParam param, String userId);
}
